package pe.gob.osce.sirenas.wd.util.reporte;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import pe.gob.osce.sirenas.model.DocenciaDTO;
import pe.gob.osce.sirenas.model.EspecialidadAcademicaDTO;
import pe.gob.osce.sirenas.model.FormacionAcademicaDTO;
import pe.gob.osce.sirenas.wd.util.ConstanteWeb;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRRewindableDataSource;


public class ReporteLstDocenciaDS implements JRDataSource,JRRewindableDataSource, Serializable {


	/** Atributo que debe ser distinto para cada versión compilada que tengamos de esta clase */
	private static final long serialVersionUID = 2499892224063000859L;

	/** Lista para el detalle del reporte. */
	private List listaDetalle = new ArrayList();
	/** Index del registro. */
	private int indexDetalle = -1;
	/** Formato de fecha */
	SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/M/yyyy"); 
	

	public ReporteLstDocenciaDS(List listaDetalle) {
		this.listaDetalle = listaDetalle;
	}

	/**
	 * Método que llama el jasper para verificar si existen más elementos en la lista.
	 * @return bnext  retorna un valor de tipo Boolean, tipo boolean.
	 * @throws JRException manejador de excepciones.
	 */
	public boolean next() throws JRException {
		indexDetalle++;
		boolean bnext = (listaDetalle != null && indexDetalle < listaDetalle
				.size());
		return bnext;
	}


	/**
	 * Método que llama el jasper en cada fila para obtener el valor de la etiqueta.
	 * @param field nombre de la etiqueta en el jasper, tipo JRField.
	 * @return value valor de la etiqueta, tipo Object.
	 * @throws JRException manejador de excepciones.
	 */
	public Object getFieldValue(JRField field) throws JRException {
		
		Object value = null;
		String fieldName = field.getName();
		DocenciaDTO object = (DocenciaDTO) listaDetalle.get(indexDetalle);
		
		if ("F_ACTIVIDAD".equals(fieldName)) {
			if(object.getDescripcionActividad()!=null)
				value = object.getDescripcionActividad();
			else
				value = "";
		}else if("F_CURSO".equals(fieldName)) {
			if(object.getDescripcionCurso()!=null)
				value = object.getDescripcionCurso();
			else
				value = "";
		}else if("F_INSTITUCION".equals(fieldName)) {
			if(object.getDescCentroEstudios()!=null )
				value = object.getDescCentroEstudios();
			else
				value = "";
		}else if ("F_DURACION".equals(fieldName)) {
			if(object.getDuracion()!=null )
				value = object.getDuracion().toString();
			else
				value = "";
		}else if ("F_ESPECIALIDAD".equals(fieldName)) {
			if(object.getIndEspecialidad()!=null )
				value = object.getDescEspecialidad();
			else
				value = "";
		}
		
		return value;
	}

	
	/**
	 * Metodo que permite obtener listaDetalle.
	 * @return listaDetalle , tipo List.
	 */
	public List getListaDetalle() {
		return listaDetalle;
	}

	/**
	 * Permite actualizar listaDetalle.
	 * @param listaDetalle, tipo List.
	 */
	public void setListaDetalle(List listaDetalle) {
		this.listaDetalle = listaDetalle;
	}

	/**
	 * Metodo que permite obtener indexDetalle.
	 * @return indexDetalle , tipo int.
	 */
	public int getIndexDetalle() {
		return indexDetalle;
	}

	/**
	 * Permite actualizar indexDetalle.
	 * @param indexDetalle, tipo int.
	 */
	public void setIndexDetalle(int indexDetalle) {
		this.indexDetalle = indexDetalle;
	}

	/**
	 * Metodo que permite obtener formatoFecha.
	 * @return formatoFecha , tipo SimpleDateFormat.
	 */
	public SimpleDateFormat getFormatoFecha() {
		return formatoFecha;
	}

	/**
	 * Permite actualizar formatoFecha.
	 * @param formatoFecha, tipo SimpleDateFormat.
	 */
	public void setFormatoFecha(SimpleDateFormat formatoFecha) {
		this.formatoFecha = formatoFecha;
	}

	@Override
	public void moveFirst() throws JRException {
		// TODO Auto-generated method stub
		this. indexDetalle = -1;
	}


	
	
	
}
